Inside Macintosh: QuickTime Components

| Previous | Chapter contents | Chapter top | Section top | Next |

Implementing the Required Export Component Functions

Listing 3 provides the component dispatchers for the movie export component together with the required functions.

Listing 3 Implementing the required export functions

typedef struct {
    ComponentInstance self;
} ExportPICSGlobalsRecord, *ExportPICSGlobals;
/* entry point for all Component Manager requests */
pascal ComponentResult ExportPICSDispatcher
                                        (ComponentParameters *params,
                                         Handle storage)
{
    OSErr err = badComponentSelector;
    ComponentFunction componentProc = 0;
    switch (params->what) {
        case kComponentOpenSelect:
            componentProc = ExportPICSOpen; break;
        case kComponentCloseSelect:
            componentProc = ExportPICSClose; break;
        case kComponentCanDoSelect:
            componentProc = ExportPICSCanDo; break;
        case kComponentVersionSelect:
            componentProc = ExportPICSVersion; break;
        case kMovieExportToFileSelect:
            componentProc = ExportPICSToFile; break;
    }
    if (componentProc)
        err = CallComponentFunctionWithStorage (storage, params,
                                                             componentProc);
    return err;
}
pascal ComponentResult ExportPICSCanDo (ExportPICSGlobals store,
                                                     short ftnNumber)
{
    switch (ftnNumber) {
        case kComponentOpenSelect:
        case kComponentCloseSelect:
        case kComponentCanDoSelect:
        case kComponentVersionSelect:
        case kMovieExportToFileSelect:
            return true;
            break;
        default:
            return false;
            break;
    }
}
pascal ComponentResult ExportPICSVersion (ExportPICSGlobals store)
{
    return 0x00010001;
}
pascal ComponentResult ExportPICSOpen (ExportPICSGlobals store,
                                                     ComponentInstance self)
{
    OSErr err;
    store = (ExportPICSGlobals) NewPtrClear
                (sizeof(ExportPICSGlobalsRecord));
    if (err = MemError()) goto bail;
    store->self = self;
    SetComponentInstanceStorage(self, (Handle)store); bail:
    return err;
}
pascal ComponentResult ExportPICSClose (ExportPICSGlobals store,
                                                     ComponentInstance self)
{
    if (store) DisposPtr((Ptr)store);
    return noErr;
}

© 1997 Apple Computer, Inc.

| Previous | Chapter contents | Chapter top | Section top | Next |